//! \file Abilities.h
//! \brief This file maintains the grouping of each unique ability.
//!
//! Each ability describes the character and affects some of the characters
//! actions.
//! TODO: document further?
// -----------------------------------------------------------------------------
//! This program is free software; you can redistribute it and/or
//! modify it under the terms of the GNU General Public License
//! as published by the Free Software Foundation; either version 2
//! of the License, or (at your option) any later version.
//!
//! This program is distributed in the hope that it will be useful,
//! but WITHOUT ANY WARRANTY; without even the implied warranty of
//! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//! GNU General Public License for more details.
//!
//! You should have received a copy of the GNU General Public License
//! along with this program; if not, write to the Free Software Foundation,
//! Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
// -----------------------------------------------------------------------------
#ifndef dABILITIES_H_
#define dABILITIES_H_

#include <string>

//#ifdef __cplusplus
//  extern "C" {
//#endif

namespace DnD {

class Abilities
{
  public:
    Abilities();
    Abilities(int Str, int Dex, int Con, int Int, int Wis, int Cha);
    virtual ~Abilities();

    Abilities operator+(Abilities Value);
    Abilities operator-(Abilities Value);

    //Abilities Abilities::operator+(Abilities Something)

    int getStr();
    int getDex();
    int getCon();
    int getInt();
    int getWis();
    int getCha();

    std::string getStrText();
    std::string getDexText();
    std::string getConText();
    std::string getIntText();
    std::string getWisText();
    std::string getChaText();

    // TODO: not sure this belongs here, but for now...
    void rollNew(void);

  protected:
    int m_Str;  /*! Strength.  Strength measures the character's muscle and
                     physical power.                                          */
    int m_Dex;  /*! Dexterity. Dexterity measures hand-eye coordination,
                    agility, reflexes and balance.                            */
    int m_Con;  /*! Constitution. Constitution represents the characters
                    health and stamina.                                       */
    int m_Int;  /*! Intelligence. Intelligence determines how well the
                    character learns and reasons.                             */
    int m_Wis;  /*! Wisdom. Wisdom describes a characters will-power, common
                    sense, perception and intuition.                          */
    int m_Cha;  /*! Charisma. Charisma measures a character's force of
                    personality, persuasiveness, personal magnetism, ability to
                    lead, and physical attractiveness.                        */

    // TODO: centrally locate somewhere.
    std::string intToStr(int Value);
};

} // namespace DnD

//  #ifdef __cplusplus
//    }
//  #endif

#endif // dABILITIES_H_
